// src/utils/aes.ts
import CryptoJS from 'crypto-js';

// 你可以在这里设置与后端一致的密钥
const key = '1234567890123456';  // 16 字节密钥

// AES 加密，返回 Base64 编码后的密文
export function encrypt(data: string): string {
  try {
    // 创建 AES 加密
    const encryptedData = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(key), {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7,
    });

    // 返回加密后的 Base64 编码密文
    return encryptedData.toString();
  } catch (error) {
    console.error("E加密失败:", error);
    throw new Error("加密失败");
  }
}

// AES 解密，返回明文
export function decrypt(encryptedData: string): string {
  try {
    // 解密数据
    const decryptedBytes = CryptoJS.AES.decrypt(encryptedData, CryptoJS.enc.Utf8.parse(key), {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7,
    });

    // 返回解密后的明文
    return decryptedBytes.toString(CryptoJS.enc.Utf8);
  } catch (error) {
    console.error("解密失败:", error);
    throw new Error("解密失败");
  }
}

// 生成 AES 密钥的示例 (与后端 AES 密钥生成不兼容，只为示范)
export function generateKey(): string {
  const randomKey = CryptoJS.lib.WordArray.random(16); // 生成 16 字节的随机密钥
  return randomKey.toString(CryptoJS.enc.Base64); // 转换为 Base64 字符串
}
